package cc.autoapi.pucong.auto.flow.provider.node.entity;

import cc.autoapi.pucong.auto.flow.persistence.po.node.NodeInfoPo;
import cc.autoapi.pucong.auto.flow.provider.node.entity.vo.NodeInfoDetailVo;
import cc.autoapi.pucong.auto.flow.provider.node.entity.vo.NodeInfoVo;
import cc.autoapi.pucong.auto.flow.provider.node.entity.dto.NodeInfoUpdateDto;
import cc.autoapi.pucong.auto.flow.provider.node.entity.qo.NodeInfoQo;
import cc.autoapi.pucong.auto.flow.provider.node.entity.dto.NodeInfoAddDto;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * @author pucong
 * @description 节点信息 cover
 * @create 2024-09-23
 */
@Mapper(componentModel = "spring")
public interface NodeInfoConvert {

    NodeInfoConvert INSTANCE = Mappers.getMapper(NodeInfoConvert.class);

    /**
     * dto转po
     * @param dto
     * @return
     */
    NodeInfoPo dto2po(NodeInfoUpdateDto dto);

    /**
     * dto转po
     * @param dto
     * @return
     */
    NodeInfoPo dto2po(NodeInfoQo dto);

    /**
     * dto转po
     * @param dto
     * @return
     */
    NodeInfoPo dto2po(NodeInfoAddDto dto);


    /**
     * do转dto
     * @param nodeInfo
     * @return
     */
    NodeInfoVo po2vo(NodeInfoPo nodeInfo);


    /**
     * list<po>转list<vo>
     * @param nodeInfos
     * @return
     */
    List<NodeInfoVo> po2vos(List<NodeInfoPo> nodeInfos);

    NodeInfoDetailVo po2Detailvo(NodeInfoPo nodeInfo);
}
